/*
 * @Description:消费者 吃包子
 * 
 * @Author: rendc
 * 
 * @Date: 2025-08-20 11:35:39
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-08-20 14:27:51
 */
public class Customer extends Thread {
  private Bum bum;

  public Customer(String name, Bum bum) {
    super(name);
    this.bum = bum;
  }

  @Override
  public void run() {
    for (int i = 1; i <= 100; i++) {
      // 同步代码块
      // 锁是包子
      synchronized (bum) {
        // System.out.println("C:bum.flag:" + bum.flag);
        // 不吃包子
        if (!bum.flag) {
          // 如果包子存在 不蒸包子
          try {
            // 必须计时 但是无法知道确定的时间
            // Thread.sleep();
            // 可以不计时 但是无法唤醒
            // Thread.join();
            bum.wait();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
        // 吃包子
        System.out.println("第" + i + "次，吃包子");
        bum.num--;
        System.out.println("包子数量：" + bum.num);
        // 吃包子完成
        bum.flag = false;
        // 通知生产者继续生产
        bum.notify();
      }
    }
  }

}